Spring Security তে পাসওয়ার্ড রিসেট এবং পরিবর্তন

Java Technologies - স্প্রিং সিকিউরিটি (Spring Security) - Spring Security এবং Password Management
248

Spring Security ব্যবহৃত অ্যাপ্লিকেশনে পাসওয়ার্ড রিসেট এবং পরিবর্তনের ফিচার তৈরি করা অনেক গুরুত্বপূর্ণ, কারণ এটি ব্যবহারকারীদের নিরাপত্তা ও সুবিধা নিশ্চিত করে। পাসওয়ার্ড রিসেট ফিচার সাধারণত একটি সিকিউর রিকভারি প্রক্রিয়া এবং একটি টোকেন ভিত্তিক পদ্ধতির মাধ্যমে সম্পন্ন হয়।


পাসওয়ার্ড রিসেট এবং পরিবর্তন ফিচারের ধাপসমূহ

১. পাসওয়ার্ড রিসেটের মূল কাঠামো

  1. ব্যবহারকারী একটি রিকভারি রিকোয়েস্ট করবে।
  2. অ্যাপ্লিকেশন একটি টোকেন জেনারেট করে এবং এটি ব্যবহারকারীর ইমেইলে পাঠাবে।
  3. ব্যবহারকারী ইমেইল থেকে একটি লিঙ্ক ক্লিক করে নতুন পাসওয়ার্ড সেট করবে।

Spring Security তে পাসওয়ার্ড রিসেট বাস্তবায়ন:

ধাপ ১: রিসেট টোকেন মডেল তৈরি করা

import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
public class PasswordResetToken {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String token;

    @ManyToOne
    private User user; // ব্যবহারকারী সম্পর্কিত তথ্য

    private LocalDateTime expiryDate; // টোকেন মেয়াদ

    // Getter, Setter, Constructor
}

ধাপ ২: টোকেন রেপোজিটরি তৈরি করা

import org.springframework.data.jpa.repository.JpaRepository;

public interface PasswordResetTokenRepository extends JpaRepository<PasswordResetToken, Long> {
    PasswordResetToken findByToken(String token);
}

ধাপ ৩: পাসওয়ার্ড রিসেট টোকেন জেনারেট করা

import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.UUID;

@Service
public class PasswordResetService {

    private final PasswordResetTokenRepository tokenRepository;

    public PasswordResetService(PasswordResetTokenRepository tokenRepository) {
        this.tokenRepository = tokenRepository;
    }

    public PasswordResetToken createPasswordResetToken(User user) {
        PasswordResetToken token = new PasswordResetToken();
        token.setToken(UUID.randomUUID().toString()); // ইউনিক টোকেন তৈরি
        token.setUser(user);
        token.setExpiryDate(LocalDateTime.now().plusMinutes(15)); // ১৫ মিনিটের মেয়াদ
        return tokenRepository.save(token);
    }
}

ধাপ ৪: ব্যবহারকারী ইমেইলে টোকেন পাঠানো

@Service
public class EmailService {

    public void sendPasswordResetEmail(User user, String token) {
        String resetUrl = "http://localhost:8080/reset-password?token=" + token;
        String subject = "Password Reset Request";
        String body = "Click the following link to reset your password: " + resetUrl;

        // ইমেইল পাঠানোর লজিক (SimpleMailMessage বা অন্য ইমেইল API ব্যবহার)
        System.out.println("Sending email to " + user.getEmail() + " with reset link: " + resetUrl);
    }
}

ধাপ ৫: পাসওয়ার্ড রিসেট লিঙ্ক যাচাই করা

import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

@Service
public class ResetPasswordService {

    private final PasswordResetTokenRepository tokenRepository;
    private final UserRepository userRepository;
    private final PasswordEncoder passwordEncoder;

    public ResetPasswordService(PasswordResetTokenRepository tokenRepository,
                                UserRepository userRepository,
                                PasswordEncoder passwordEncoder) {
        this.tokenRepository = tokenRepository;
        this.userRepository = userRepository;
        this.passwordEncoder = passwordEncoder;
    }

    public String validateResetToken(String token, String newPassword) {
        PasswordResetToken resetToken = tokenRepository.findByToken(token);

        if (resetToken == null || resetToken.getExpiryDate().isBefore(LocalDateTime.now())) {
            return "Invalid or expired token.";
        }

        User user = resetToken.getUser();
        user.setPassword(passwordEncoder.encode(newPassword)); // নতুন পাসওয়ার্ড এনক্রিপ্ট করা
        userRepository.save(user);

        tokenRepository.delete(resetToken); // টোকেন মেয়াদ শেষ
        return "Password successfully updated.";
    }
}

Spring Security তে পাসওয়ার্ড পরিবর্তন

পাসওয়ার্ড পরিবর্তন করার ধাপ

  1. লগইন অবস্থায় ব্যবহারকারী পাসওয়ার্ড পরিবর্তন করতে পারবে।
  2. পুরানো পাসওয়ার্ড যাচাই করা হবে।
  3. নতুন পাসওয়ার্ড সংরক্ষণ করা হবে।

পাসওয়ার্ড পরিবর্তনের উদাহরণ

import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

@Service
public class ChangePasswordService {

    private final UserRepository userRepository;
    private final PasswordEncoder passwordEncoder;

    public ChangePasswordService(UserRepository userRepository, PasswordEncoder passwordEncoder) {
        this.userRepository = userRepository;
        this.passwordEncoder = passwordEncoder;
    }

    public String changePassword(String oldPassword, String newPassword) {
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        String username = authentication.getName();

        User user = userRepository.findByUsername(username);
        if (user == null || !passwordEncoder.matches(oldPassword, user.getPassword())) {
            return "Old password is incorrect.";
        }

        user.setPassword(passwordEncoder.encode(newPassword)); // নতুন পাসওয়ার্ড সংরক্ষণ
        userRepository.save(user);
        return "Password successfully updated.";
    }
}

Spring Security তে সুরক্ষার গুরুত্ব

  1. Password Encoding:
    BCryptPasswordEncoder ব্যবহার করে পাসওয়ার্ড এনক্রিপ্ট করা হয়।
  2. Token Expiry:
    রিসেট টোকেন একটি নির্দিষ্ট সময়ে মেয়াদ উত্তীর্ণ হয়।
  3. Validation:
    সঠিক টোকেন এবং পাসওয়ার্ড যাচাই নিশ্চিত করা হয়।

উপসংহার

Spring Security দিয়ে পাসওয়ার্ড রিসেট এবং পরিবর্তনের ফিচার তৈরি করা সহজ এবং নিরাপদ। পাসওয়ার্ড রিসেটের জন্য একটি সিকিউর টোকেন ভিত্তিক পদ্ধতি ব্যবহার করতে হয়। পাসওয়ার্ড পরিবর্তনের জন্য ব্যবহারকারীকে প্রমাণীকৃত হতে হবে। এভাবে সঠিক প্রক্রিয়া অনুসরণ করে আপনার অ্যাপ্লিকেশনের নিরাপত্তা নিশ্চিত করা সম্ভব।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...